package com.zhisheng.day10_tlias.mapper;

import com.zhisheng.day10_tlias.dto.EmpQueryDto;
import com.zhisheng.day10_tlias.entry.Emp;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

//@Mapper
public interface EmpMapper {

    // 为了完成分页查询,需要在mapper层写两个方法,才能支持分页需要的数据
    /*
        1: 写一个方法,专门用于查询满足条件的数据的总数量
        2: 再写一个方法,专门用于查询满足当前这一页条件的数据集合
     */
   // @Select("select count(*) from emp ")
   /* public Long selectCountByCondition(EmpQueryDto dto);

    public List<Emp> selectListByCondition(EmpQueryDto dto);*/


    // 使用mybatis的分页插件实现分页   在mapper层只需要写一个条件查询的方法即可,无需考虑满足条件的总数量和分页相关的内容
    public List<Emp> selectListByMybatisCondition(EmpQueryDto dto);

    int delByIds(@Param("ids") List<Integer> ids);

    @Insert("insert into emp  values (null,#{username},'123456',#{name},#{gender},#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})")
    int insertEmp(Emp emp);

    @Select("select * from emp where  id = #{id}")
    Emp findEmpById(Integer id);

    int updateEmp(Emp emp);

    @Select("select * from emp where username = #{username}")
    Emp selectEmpByUsername(String username);

    @Delete("delete from emp where dept_id = #{id}")
    int delByDeptId(Integer id);
}
